#Boa:Dialog:Dialog1

import wx
import wx.grid
import consultasBD
import CAJAchicaAltas
import CajaDetallesVentas
import time
import datetime
import utiles
import fiscal
import CtasCtes
import Vista
import utiles
import os


def create(parent):
    return Dialog1(parent)

[wxID_DIALOG1, wxID_DIALOG1GRID1, wxID_DIALOG1IMPRIMIR, 
] = [wx.NewId() for _init_ctrls in range(3)]

[wxID_DIALOG1MENU1ITEMS0] = [wx.NewId() for _init_coll_menu1_Items in range(1)]

class Dialog1(wx.Dialog):
    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.Dialog.__init__(self, id=wxID_DIALOG1, name='', parent=prnt,
              pos=wx.Point(103, 193), size=wx.Size(1136, 474),
              style=wx.DEFAULT_DIALOG_STYLE, title='Caja Diaria')
        self.SetClientSize(wx.Size(1120, 438))

        self.grid1 = wx.grid.Grid(id=wxID_DIALOG1GRID1, name='grid1',
              parent=self, pos=wx.Point(8, 8), size=wx.Size(1096, 384),
              style=0)

        self.imprimir = wx.Button(id=wxID_DIALOG1IMPRIMIR, label='Imprimir',
              name='imprimir', parent=self, pos=wx.Point(1024, 400),
              size=wx.Size(75, 23), style=0)
        self.imprimir.Bind(wx.EVT_BUTTON, self.OnImprimirButton,
              id=wxID_DIALOG1IMPRIMIR)

    def __init__(self, parent):
        self.padre = parent
        #hoy = time.strptime(self.padre.fecha,"%d-%m-%y")
        #fechaPago = datetime.datetime(hoy.tm_year, hoy.tm_mon, hoy.tm_mday)
        self.fecha = self.padre.fecha #str(fechaPago.strftime("%Y-%m-%d"))
        
        self.datosCaja = []
        self.renglon = []
        
        self._init_ctrls(parent)
        self.cargaGrilla()
        self.cargaProveedores()
##        self.cargaCantStockxSuc(1)
##        self.cargaCantStockxSuc(2)
##        self.cargaCantVendidos(1)
##        #self.cargaCAntTransferidos(1)
##        self.cargaCantVendidos(2)
##        self.cargaTotalVendidos()
##        self.cargaEfectividad()
        

        
    def validar_caja_cerrada(self):
        if utiles.isCajaCerrada(""):
            self.cerrarCaja.Enable(False)
            self.modificar.Enable(False)
        
    def cargaGrilla(self):
        
##        tablaSQL= "compras"
##        busca = " fecha = '"+self.fecha+"'"
##        resultado =consultasBD.cuentafilasagrupado(self,'*',tablaSQL,str(busca))
##        print self.padre.rol
        
        self.columnas2 =['IdProveedor','      Proveedor      ','COMPRADOS','Stock Sta Fe','Stock Parana','Stock Saska','   Vend. Sta Fe   ','   MONTO vend. ','   Vend. Saska   ','    TOTAL Vend.  ', '    Efectividad Total%  ', '   Ganancia  ']
        
        self.grid1.CreateGrid(1000,len(self.columnas2))
        
        for i in range(len(self.columnas2)-1,-1,-1): 
            self.grid1.SetColLabelValue(i,self.columnas2[i])
        self.grid1.AutoSizeColumn(0,True)
        self.grid1.AutoSizeColumn(1,True)
        self.grid1.AutoSizeColumn(2,True)
        self.grid1.AutoSizeColumn(3,True)
        self.grid1.AutoSizeColumn(4,True)
        self.grid1.AutoSizeColumn(5,True)
        self.grid1.AutoSizeColumn(6,True)
        
        
        if self.padre.rol=="cajera":
            self.grid1.AutoSizeColumn(6,True)
        
            
        #self.grid1.AutoSizeColumn(7,True)
        #self.grid2.SetColSize(1,100)
        self.grid1.DisableDragColSize()
        


    
    def cargaProveedores(self):
        sql="SELECT distinct pr.idproveedor, pr.nombre  FROM proveedor pr,productos p,ventastieneproductos vtp,producto_talle_color ptc WHERE ptc.id=vtp.ptc and ptc.codsussan=p.codsussan and p.proveedor=pr.idproveedor AND vtp.auditoria BETWEEN '2011-04-01' aND '2011-08-01' "
        print sql
        result= consultasBD.ordenCrudaDict(sql)
        j = 0
        
        
        #compras
        for i in result:
            idproveedor = i["idproveedor"]
            pronombre = i["nombre"]
            
            #monto real de compra
            
            
            
            
            
            print j
            self.grid1.SetCellValue(j,0,str(idproveedor)) #idproveedor
            self.grid1.SetCellValue(j,1,str(pronombre)) 
            #self.grid1.SetCellValue(j,2,str(compradas)) 
            
            
            #STOCK en suc 1
            valor1=""
            sql= "SELECT SUM( s.stock ) AS stock, p.proveedor FROM stock s, PRODUCTOS P, proveedor pr, producto_talle_color ptc WHERE p.proveedor = pr.idproveedor AND p.proveedor = '%s' AND ptc.codsussan = p.codsussan AND s.ptc = ptc.id AND s.sucursal ='%s' and p.anio='2011' GROUP BY p.proveedor"  % (idproveedor,1)
            print sql
            result= consultasBD.ordenCrudaDict(sql)
            
            for i in result:
                if i["stock"]!=None:
                    valor1 = i["stock"]
                else:
                    valor1 = ""
            self.grid1.SetCellValue(j,3,str(valor1))
            
            #STOCK en suc 2
            valor2=""
            sql= "SELECT SUM( s.stock ) AS stock, p.proveedor FROM stock s, PRODUCTOS P, proveedor pr, producto_talle_color ptc WHERE p.proveedor = pr.idproveedor AND p.proveedor = '%s' AND ptc.codsussan = p.codsussan AND s.ptc = ptc.id AND s.sucursal ='%s' and p.anio='2011' GROUP BY p.proveedor"  % (idproveedor,2)
            print sql
            result= consultasBD.ordenCrudaDict(sql)
            if result!=None:
                for i in result:
                    if i["stock"]!=None:
                        valor2 = i["stock"]
                    else:
                        valor2 = ""
            self.grid1.SetCellValue(j,4,str(valor2))
            
            
            
            
            #STOCK en suc 3
            valorx2=""
            sql= "SELECT SUM( s.stock ) AS stock, p.proveedor FROM stock s, PRODUCTOS P, proveedor pr, producto_talle_color ptc WHERE p.proveedor = pr.idproveedor AND p.proveedor = '%s' AND ptc.codsussan = p.codsussan AND s.ptc = ptc.id AND s.sucursal ='%s' and p.anio='2011' GROUP BY p.proveedor"  % (idproveedor,3)
            print sql
            result= consultasBD.ordenCrudaDict(sql)
            if result!=None:
                for i in result:
                    if i["stock"]!=None:
                        valorx2 = i["stock"]
                    else:
                        valor2 = ""
            self.grid1.SetCellValue(j,5,str(valorx2))
            
            #VENDIDOS EN SUC 1
            valor3 =""
            fecha="2011-04-01"
            sql= "SELECT SUM(vp.cantidad ) as VENDIDOS , p.proveedor,SUM(vp.preciofinal) as PrecioVendido FROM ventastieneproductos vp, PRODUCTOS P, proveedor pr, producto_talle_color ptc WHERE p.proveedor = pr.idproveedor AND p.proveedor='%s' AND ptc.codsussan = p.codsussan AND vp.ptc = ptc.id AND vp.auditoria >'%s' and vp.cantidad>0 GROUP BY p.proveedor"  % (idproveedor,fecha)
            print sql
            result= consultasBD.ordenCrudaDict(sql)
            preciosVentas1=0
            if result!=None:
                for i in result:
                    if i["VENDIDOS"]!=None:
                        preciosVentas1 = i["PrecioVendido"]
                        valor3 = str(i["VENDIDOS"])
                        #valor33 =str(round(i["PrecioVendido"],2))
                     
                    else:
                        valor3 = ""
                            
            self.grid1.SetCellValue(j,6,str(valor3))
            #self.grid1.SetCellValue(j,7,str(valor33))
            
            #VENDIDOS EN SUC 2
            #valor4 =""
            #sql= "SELECT SUM(vp.cantidad ) as VENDIDOS , p.proveedor, SUM(vp.preciofinal) as PrecioVendido FROM ventastieneproductos vp, PRODUCTOS P, proveedor pr, producto_talle_color ptc WHERE p.proveedor = pr.idproveedor AND p.proveedor='%s' AND ptc.codsussan = p.codsussan AND vp.ptc = ptc.id AND vp.auditoria >'%s' GROUP BY p.proveedor"  % (idproveedor,fecha)
            #print sql
            #preciosVentas2=0
            #result= consultasBD.executaRemoto(sql)
            #if result!=None:
            #    for i in result:
            #        if i["VENDIDOS"]!=None:
            #            preciosVentas2 = i["PrecioVendido"]
            #            valor4 = str(i["VENDIDOS"])+'    por .. $'+str(round(i["PrecioVendido"],2))
            #        else:
            #            valor4 = ""
            #self.grid1.SetCellValue(j,8,str(valor4))
            
            valor4=""
            #VENDIDOS TOTAL x producto
            sumador1=self.grid1.GetCellValue(j,6)[:3]
            if self.grid1.GetCellValue(j,6)=="":
                sumador1=0
            
            sumador2=self.grid1.GetCellValue(j,7)[:3]
            if self.grid1.GetCellValue(j,7)=="":
                sumador2=0
            
            total = float(sumador1) + float(sumador2)
            self.grid1.SetCellValue(j,9,str(round(total,2)))
            
            #vendidos total en plata
            ventasenplata = preciosVentas1
            
            
            
            #efectividad
            #['IdProveedor','      Proveedor      ','COMPRADOS','Stock Sta Fe','Stock Parana','Stock Saska','Vendido Sta Fe','Vendido Parana','Vendido Saska',' TOTAL Vendido', 'Efectividad Total%'
            
            #calculo = (float(self.grid1.GetCellValue(j,9)[:3]) * 100) / (float(self.grid1.GetCellValue(j,2)[:3]))
            calculo = 0
            #self.grid1.SetCellValue(j,10,str(round(calculo,2)))
            
            #ganancia
            compradas=0
            montoCompra=0
            ganancia= float(ventasenplata)-montoCompra
            self.grid1.SetCellValue(j,11,str(round(ganancia,2)))
            fila = [str(idproveedor),str(pronombre),str(compradas), str(valor1),str(valor2),str(valorx2),str(valor3),str(valor4),"",str(total),str(calculo),str(ganancia)]
            self.datosCaja.append(fila)
            j = j + 1
            
        
        self.totalprvee = j
        
      
##    def cargaCantStockxSuc(self,sucursal):
##        for i in xrange(self.totalprvee):
##            idproveedor = self.grid1.GetCellValue(i,0)
##            valor=0
##            sql =  "SELECT SUM( s.stock ) as StockLocal FROM compras_items ci, compras c, stock s, producto_talle_color ptc, proveedor p WHERE c.fechaingreso > '2008-08-01' AND p.idproveedor = '%s' AND ptc.id = ci.codsussan AND s.ptc = ptc.id AND p.idproveedor = c.idproveedor AND c.idfactura = ci.idfactura and s.sucursal='%s'" % (str(idproveedor),str(sucursal))
##            print sql
##            result= consultasBD.ordenCrudaDict(sql)
##            j = 0
##            
##            for i in result:
##                valor = i["StockLocal"]
##                self.grid1.SetCellValue(j,3,str(valor))
##          
##          
##    def cargaCantStockxSuc(self,suc):
##        if suc==1:
##            print "entro por suc 1"
##            self.p=0
##            valor = 0
##            for i in xrange(self.totalprvee):
##                idproveedor = self.grid1.GetCellValue(i,0)
##                
##                sql= "SELECT SUM( s.stock ) AS stock, p.proveedor FROM stock s, PRODUCTOS P, proveedor pr, producto_talle_color ptc WHERE p.proveedor = pr.idproveedor AND p.proveedor = '%s' AND ptc.codsussan = p.codsussan AND s.ptc = ptc.id AND s.sucursal ='%s' GROUP BY p.proveedor"  % (idproveedor,suc)
##                print sql
##                result= consultasBD.ordenCrudaDict(sql)
##                
##                for i in result:
##                    valor = i["stock"]
##                    self.grid1.SetCellValue(self.p,3,str(valor))
##                    self.p=self.p+1
##        else:
##            print "entro por suc 2"
##            
##            valor = 0
##            self.p=0
##            for i in xrange(self.totalprvee):
##                idproveedor = self.grid1.GetCellValue(i,0)
##                
##                sql= "SELECT SUM( s.stock ) AS stock, p.proveedor FROM stock s, PRODUCTOS P, proveedor pr, producto_talle_color ptc WHERE p.proveedor = pr.idproveedor AND p.proveedor = '%s' AND ptc.codsussan = p.codsussan AND s.ptc = ptc.id AND s.sucursal ='%s' GROUP BY p.proveedor"  % (idproveedor,suc)
##                print sql
##                result= consultasBD.executaRemoto(sql)
##                
##                for i in result:
##                    valor = i["stock"]
##                    self.grid1.SetCellValue(self.p,4,str(valor))
##                    self.p=self.p+1
##            
        
        
    

    def OnImprimirButton(self, event):
        utiles.reporte_html(self,self.datosCaja, self.columnas2,"0")
        #fecha=2008-09-15


##
##    def cargaCantVendidos(self, suc):        
##        if suc==1:
##            print "entro por suc 1"
##            self.p=0
##            
##            for i in xrange(self.totalprvee):
##                idproveedor = self.grid1.GetCellValue(i,0)
##                valor = 0
##                sql= "SELECT SUM(vp.cantidad ) as VENDIDOS , p.proveedor FROM ventastieneproductos vp, PRODUCTOS P, proveedor pr, producto_talle_color ptc WHERE p.proveedor = pr.idproveedor AND p.proveedor='%s' AND ptc.codsussan = p.codsussan AND vp.ptc = ptc.id GROUP BY p.proveedor"  % (idproveedor)
##                print sql
##                result= consultasBD.ordenCrudaDict(sql)
##                valor = i["VENDIDOS"]
##                for i in result:
##                    valor = i["VENDIDOS"]
##                    self.grid1.SetCellValue(self.p,5,str(valor))
##                    self.p=self.p+1
##        else:
##            print "entro por suc 2"
##            
##            
##            self.p=0
##            for i in xrange(self.totalprvee):
##                idproveedor = self.grid1.GetCellValue(i,0)
##                
##                sql= "SELECT SUM(vp.cantidad ) as VENDIDOS , p.proveedor FROM ventastieneproductos vp, PRODUCTOS P, proveedor pr, producto_talle_color ptc WHERE p.proveedor = pr.idproveedor AND p.proveedor='%s' AND ptc.codsussan = p.codsussan AND vp.ptc = ptc.id GROUP BY p.proveedor"  % (idproveedor)
##                print sql
##                result= consultasBD.executaRemoto(sql)
##                valor = 0
##                for i in result:
##                    valor = i["VENDIDOS"]
##                    self.grid1.SetCellValue(self.p,6,str(valor))
##                    self.p=self.p+1
##            
##    
    
##    def cargaCAntTransferidos(self,suc):
##        self.p=0
##        for i in xrange(self.totalprvee):
##            idproveedor = self.grid1.GetCellValue(i,0)
##            sql= "SELECT SUM( ttp.cant ) AS transferidos, p.proveedor FROM transferenciastieneproductos ttp, transferencias t, PRODUCTOS P, proveedor pr, producto_talle_color ptc WHERE ttp.idtransferencia = t.id AND ttp.ptc = ptc.id AND p.proveedor = pr.idproveedor AND p.proveedor = '%s' AND t.idsucorigen='%s' AND ptc.codsussan = p.codsussan GROUP BY p.proveedor" % (idproveedor,suc)
##            print sql
##            result= consultasBD.ordenCrudaDict(sql)
##            
##            for i in result:
##                self.grid1.SetCellValue(self.p,7,str(i["transferidos"]))
##                self.p=self.p+1
    
    
